package JLB_Chapter_07;

public class OuterClass {
    // 在外部类中实例化内部类对象
    innerClass in = new innerClass();
    class innerClass {
        //定义内部类成员变量
        private int y = 0;
        // 内部类构造方法
        innerClass(){
        }
        // 内部类成员方法
        public void inf() {
            System.out.println("内部类成员方法");
        }
    }
    // 在外部类方法中调用内部类方法
    public void ouf() {
        in.inf();
    }
    public innerClass doit() {
        // 外部类不可直接访问内部类成员变量
        //y = 4;
        in.y = 4;
        return new innerClass();
    }
    public static void main(String[] args) {
        OuterClass out = new OuterClass();
        //内部类的对象实例化操作必须在外部类或外部类的非静态方法中实现
        OuterClass.innerClass in = out.doit();
        in.inf();
        System.out.println(in.y);
        OuterClass.innerClass in2 = out.new innerClass();
        in2.inf();
        System.out.println(in2.y);
    }
}
